package com.shujia.scala

object Demo15CaseClass {
  def main(args: Array[String]): Unit = {
    /**
     * case class 样例类
     * 1、会自动拥有在构造方法中定义的参数作为属性
     * 2、参数默认都是由val修饰的可以省略，如果需要对属性进行修改则可以用var修饰
     * 3、创建样例类对象时可以省略new关键字
     * 4、样例类默认都实现了序列化接口，意味着样例类对象通过网络传输
     * 5、样例类会给所有属性默认加上get方法，如果时var修饰的属性还会有set方法
     * 6、样例类会重写toString方法，直接println样例类对象时会将属性输出
     */

    // 创建样例类的对象
    val stu01: StuCaseClass = StuCaseClass("001", "zs", 20, "男", "理科五班")
    // 通过样例类对象直接.属性即可获取对象的属性值
    println(stu01.id)
    println(stu01.name)
    println(stu01.clazz)

    stu01.age = 22

    println(stu01)

  }

  // 通过case class定义一个样例类，只需要定义属性即可
  case class StuCaseClass(id:String,name:String,var age:Int,gender:String,clazz:String)

}
